perm filename GREEKU.MF[CM,DEK] blob sn#800681 filedate 1985-08-11 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00013 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00003 00002	% Computer Modern Greek caps, analogous to the uppercase Roman letters.
C00004 00003	cmchar "Uppercase Greek Gamma"
C00006 00004	cmchar "Uppercase Greek Delta"
C00008 00005	cmchar "Uppercase Greek Theta"
C00010 00006	cmchar "Uppercase Greek Lambda"
C00013 00007	cmchar "Uppercase Greek Xi"
C00016 00008	cmchar "Uppercase Greek Pi"
C00018 00009	cmchar "Uppercase Greek Sigma"
C00020 00010	cmchar "Uppercase Greek Upsilon"
C00022 00011	cmchar "Uppercase Greek Phi"
C00024 00012	cmchar "Uppercase Greek Psi"
C00026 00013	cmchar "Uppercase Greek Omega"
C00028 ENDMK
C⊗;
% Computer Modern Greek caps, analogous to the uppercase Roman letters.

% Character codes \0000 through \0012 are generated,
% using plain \TeX's standard text font layout conventions.
cmchar "Uppercase Greek Gamma";
beginchar(oct"000",11u#-width_adj#,cap_height#,0); less_rounded;
italcorr cap_height#*slant-beak_jut#-.25u#;
adjust_fit(cap_serif_fit#,0);
h:=vround(h-stem_corr);
pickup tiny.nib; pos1(cap_stem,0); pos2(cap_stem,0);
lft x1l=lft x2l=round max(2u,3u-.5cap_stem); top y1=h; bot y2=0;
filldraw stroke z1e--z2e; % stem
pickup crisp.nib; pos3(slab,90); pos4(hair,0);
top y3r=h; x3=x1; rt x4r=round(w-.75u); y4=good.y(y3l-beak);
arm(3,4,e,beak_darkness,beak_jut);	% arm and beak
if serifs: dish_serif(1,2,a,1/3,cap_jut,b,1/3,.5cap_jut);	% upper serif
 dish_serif(2,1,c,1/3,cap_jut,d,1/3,1.25cap_jut); fi	% lower serif
math_fit(0,ic#-2.5u#); penlabels(1,2,3,4); endchar;
cmchar "Uppercase Greek Delta";
beginchar(oct"001",15u#,cap_height#,0); less_rounded;
adjust_fit(0,0);
numeric left_stem,alpha;
left_stem=cap_hair if hefty: -3stem_corr fi;
x1l=w-x4r=.75u; y1=y4=0;
x2-x1=x4-x3; x3r=x2r+apex_corr; y2=y3=h+apex_o+apex_oo;
alpha=diag_ratio(2,left_stem,y2-y1,x4r-x1l-apex_corr);
penpos1(alpha*left_stem,0); penpos2(alpha*left_stem,0);
penpos3(alpha*cap_stem,0); penpos4(alpha*cap_stem,0);
fill diag_end(2l,1l,1,1,4r,3r)--diag_end(4r,3r,1,1,2l,1l)--cycle;	% triangle
z0=whatever[z1r,z2r]=whatever[z3l,z4l];
y5=y6=cap_vstem; z5=whatever[z1r,z2r]; z6=whatever[z3l,z4l];
if y0<h-cap_notch_cut: y0:=h-cap_notch_cut;
 unfill z0+.5right{down}...{z4-z3}z6--z5{z2-z1}
  ...{up}z0+.5left--cycle; % counter
else: unfill z0--z5--z6--cycle; fi	% counter
penlabels(0,1,2,3,4,5,6); endchar;
cmchar "Uppercase Greek Theta";
beginchar(oct"002",14u#,cap_height#,0);
italcorr .7cap_height#*slant-.5u#;
adjust_fit(0,0);
numeric light_curve; light_curve=round(cap_curve-2stem_corr);
penpos1(vair,90); penpos3(vround(vair+.5vair_corr),-90);
penpos2(light_curve,180); penpos4(light_curve,0);
if monospace: x2r=round 1.5u;
 interim superness:=sqrt superness;	% make |"O"|, not |"0"|
else: x2r=round u; fi
x4r=w-x2r; x1=x3=.5w; y1r=h+o; y2=y4=.5h-vair_corr; y3r=-o;
penstroke pulled_super_arc.e(1,2)(.5superpull)
 & pulled_super_arc.e(2,3)(.5superpull)
 & pulled_super_arc.e(3,4)(.5superpull)
 & pulled_super_arc.e(4,1)(.5superpull) & cycle;	% bowl
pickup crisp.nib; pos5(cap_vstem,90); pos6(cap_vstem,90);
lft x5=w-rt x6=round(x2l+u)+1; y5=y6=.5[y1l,y3l];
filldraw stroke z5e--z6e;	% bar
if serifs: pos7(hair,0); pos8(hair,0); pos9(hair,0); pos10(hair,0);
 x7l=x8l=x5; x9r=x10r=x6;
 y7-y5r=y9-y6r=y5l-y8=y6l-y10=vround .05h;
 filldraw stroke z7e--z8e;	% left serif
 filldraw stroke z9e--z10e; fi	% right serif
math_fit(-.3cap_height#*slant-.5u#,ic#-.5u#);
penlabels(1,2,3,4,5,6,7,8,9,10); endchar;
cmchar "Uppercase Greek Lambda";
beginchar(oct"003",12u#,cap_height#,0); less_rounded;
adjust_fit(cap_serif_fit#,cap_serif_fit#);
numeric left_stem,outer_jut,alpha;
left_stem=cap_hair if hefty: -3stem_corr fi;
outer_jut=.7cap_jut; x1l=w-x4r=l+letter_fit+outer_jut+.5u; y1=y4=0;
x2-x1=x4-x3; x3r=x2r+apex_corr; y2=y3=h+apex_o+apex_oo;
alpha=diag_ratio(2,left_stem,y2-y1,x4r-x1l-apex_corr);
penpos1(alpha*left_stem,0); penpos2(alpha*left_stem,0);
penpos3(alpha*cap_stem,0); penpos4(alpha*cap_stem,0);
z0=whatever[z1r,z2r]=whatever[z3l,z4l];
if y0<h-cap_notch_cut: y0:=h-cap_notch_cut;
  fill z0+.5right{down}...{z4-z3}diag_end(3l,4l,1,1,4r,3r)
    --diag_end(4r,3r,1,1,2l,1l)--diag_end(2l,1l,1,1,1r,2r){z2-z1}
    ...{up}z0+.5left--cycle; % left and right diagonals
else: fill z0--diag_end(0,4l,1,1,4r,3r)--diag_end(4r,3r,1,1,2l,1l)
    --diag_end(2l,1l,1,1,1r,0)--cycle; fi % left and right diagonals
if serifs: numeric inner_jut; pickup tiny.nib;
 prime_points_inside(1,2); prime_points_inside(4,3);
 if rt x1'r+cap_jut+.5u+1≤lft x4'l-cap_jut: inner_jut=cap_jut;
 else: rt x1'r+inner_jut+.5u+1=lft x4'l-inner_jut; fi
 dish_serif(1',2,a,1/2,outer_jut,b,.6,inner_jut)(dark);	% left serif
 dish_serif(4',3,c,1/2,inner_jut,d,1/3,outer_jut); fi	% right serif
penlabels(0,1,2,3,4,5,6); endchar;
cmchar "Uppercase Greek Xi";
beginchar(oct"004",12u#,cap_height#,0); less_rounded;
italcorr cap_height#*slant-.35u#;
adjust_fit(0,0);
h:=vround(h-2stem_corr);
numeric shaved_stem; shaved_stem=round .9[vair,.85cap_stem];
pickup crisp.nib; pos1(shaved_stem,90); pos2(hair,0);
top y1r=h; x1=.5w; rt x2r=round(w-.85u); y2=good.y(y1l-4/9beak);
arm(1,2,a,.4beak_darkness,.3beak_jut);	% upper right arm and beak
pos3(hair,180); x3=w-x2; y3=y2;
arm(1,3,b,.4beak_darkness,-.3beak_jut);	% upper left arm and beak
pos4(shaved_stem,-90); pos5(hair,0);
bot y4r=0; x4=.5w; rt x5r=round(w-.75u); y5=good.y(y4l+.5beak);
arm(4,5,c,.4beak_darkness,.3beak_jut);	% lower right arm and beak
pos6(hair,180); x6=w-x5; y6=y5;
arm(4,6,d,.4beak_darkness,-.3beak_jut);	% lower left arm and beak
pos7(shaved_stem,90); pos8(shaved_stem,90);
lft x7=w-rt x8=round if serifs: 2.5 else: 2 fi\\ u;
top y7r=top y8r=vround(.52h+.5shaved_stem);
filldraw stroke z7e--z8e;	% middle bar
if serifs: numeric xjut;
 if bot y2>top y7r+.75cap_jut: xjut=.5cap_jut;
 else: bot y2=top y7r+1.5xjut; fi
 pos11(hair,0); pos12(hair,0); y11=y12;
 pos13(hair,0); pos14(hair,0); y13=y14;
 lft x11l=lft x13l=w-rt x12r=w-rt x14r=round 2.5u;
 top y11-bot y13=shaved_stem+2xjut; .5[y11,y13]=y7;
 filldraw stroke z11e--z13e; filldraw stroke z12e--z14e; fi	% middle serifs
math_fit(0,.5ic#); penlabels(1,2,3,4,5,6,7,8,11,12,13,14); endchar;
cmchar "Uppercase Greek Pi";
beginchar(oct"005",13u#+width_adj#,cap_height#,0); less_rounded;
italcorr cap_height#*slant-cap_serif_fit#+cap_jut#-2.5u#+min(.5cap_stem#,u#);
adjust_fit(cap_serif_fit#,cap_serif_fit#); pickup tiny.nib;
h:=vround(h-stem_corr);
pos1(cap_stem,0); pos2(cap_stem,0); pos3(cap_stem,0); pos4(cap_stem,0);
lft x1l=lft x2l=round max(2u,3u-.5cap_stem); x3=x4=w-x1;
top y1=top y3=h; bot y2=bot y4=0;
filldraw stroke z1e--z2e; % left stem
filldraw stroke z3e--z4e; % right stem
penpos5(cap_bar,90); penpos6(cap_bar,90);
x5=x1; x6=x3; y5r=y6r=h;
fill stroke z5e--z6e;	% bar
if serifs: numeric inner_jut;
 if rt x1r+cap_jut+.5u+1≤lft x3l-cap_jut: inner_jut=cap_jut;
 else: rt x1r+inner_jut+.5u+1=lft x3l-inner_jut; fi
 dish_serif(1,2,a,1/3,cap_jut,b,1/3,eps);	% upper left serif
 dish_serif(2,1,c,1/3,cap_jut,d,1/3,inner_jut); % lower left serif
 dish_serif(3,4,e,1/3,eps,f,1/3,cap_jut);	% upper left serif
 dish_serif(4,3,g,1/3,inner_jut,h,1/3,cap_jut); fi	% lower left serif
math_fit(0,.5ic#); penlabels(1,2,3,4,5,6); endchar;
cmchar "Uppercase Greek Sigma";
beginchar(oct"006",13u#,cap_height#,0); less_rounded;
italcorr cap_height#*slant-beak_jut#-.5u#;
adjust_fit(0,0);
numeric bot_arm_thickness;
bot_arm_thickness=vround .25[slab,cap_vstem];
pickup tiny.nib; lft x1l=round u; x1l=x2l=x4l;
top y1=h; bot y2=h-slab; bot y4=0; x3l-x1l=4/11(w-2u); y3=.5h;
numeric alpha[]; alpha1=((x3l-x1l)++(y2-y3))/(y2-y3);
penpos1(alpha1*(cap_stem-tiny),0); penpos2(alpha1*(cap_stem-tiny),0);
penpos3(alpha1*(cap_stem-tiny),0);
alpha2=diag_ratio(1,cap_hair-tiny,y3-y4,x3r-x4l);
penpos4(alpha2*(cap_hair-tiny),0);
z0=whatever[z2l,z3l]=z4l+whatever*(z3r-z4r);
filldraw z1l--z2l--z0--z4l--z4r--z3r--z2r--z1r--cycle;	% diagonals
pickup crisp.nib; pos5(slab,90); pos6(hair,0);
top y5r=h; x5=x1; rt x6r=round(w-u); y6=good.y(y5l-beak);
arm(5,6,a,beak_darkness,beak_jut);	% upper arm and beak
pos7(bot_arm_thickness,-90); pos8(hair,0);
bot y7r=0; z7l=whatever[z4,z3]; x7r:=x4; x8=x6; y8=good.y(y7l+beak);
arm(7,8,b,beak_darkness,beak_jut);	% lower arm and beak
math_fit(0,.5ic#); penlabels(0,1,2,3,4,5,6,7,8); endchar;
cmchar "Uppercase Greek Upsilon";
beginchar(oct"007",14u#,cap_height#,0);
italcorr .8cap_height#*slant-.5u#;
adjust_fit(0,0);
pickup tiny.nib; pos1(cap_stem,0); pos2(cap_stem,0);
lft x1l=lft x2l=round(.5w-.5cap_stem); y1=.5h; bot y2=0;
filldraw stroke z1e--z2e; % stem
penpos3(.6cap_stem,0); penpos4(.75cap_curve,90); penpos5(cap_hair,180);
z3l=lft z1l; x5r=round u; y5=bot .8h; x4=.61803[x3l,x5l]; y4r=h+o;
penpos5'(cap_hair,180); x5'=x5; y5'=h;
fill z3r{up}...z4r{left}...{down}diag_end(5'r,5r,1,1,5l,5'l){up}
 ...{right}z4l...{down}z3l--cycle;	% left arc
penpos6(.6cap_stem,0); penpos7(.75cap_curve,-90); penpos8(cap_hair,-180);
z6r=rt z1r; x8=w-x5; y8=y5; x7=w-x4; y7=y4;
penpos8'(cap_hair,-180); x8'=x8; y8'=h;
fill z6r{up}...z7r{right}...{down}diag_end(8'r,8r,1,1,8l,8'l){up}
 ...{left}z7l...{down}z6l--cycle;	% right arc
if serifs: dish_serif(2,1,a,1/3,1.25cap_jut,b,1/3,1.25cap_jut); fi	% serif
math_fit(-.8cap_height#*slant-.5u#,ic#-2.5u#);
penlabels(1,2,3,4,5,6,7,8); endchar;
cmchar "Uppercase Greek Phi";
beginchar(oct"010",13u#,cap_height#,0);
italcorr .5cap_height#*slant-.5u#;
adjust_fit(0,0);
numeric shaved_stem,light_curve;
shaved_stem=cap_stem-round 2stem_corr;
light_curve=cap_curve-round stem_corr;
pickup tiny.nib; pos1(shaved_stem,0); pos2(shaved_stem,0);
lft x1l=lft x2l=round(.5w-.5cap_stem); top y1=h; bot y2=0;
filldraw stroke z1e--z2e; % stem
penpos3(vair,90); penpos5(vair,-90);
penpos4(light_curve,180); penpos6(light_curve,0);
x4r=round u; x6r=w-x4r; x3=x5=.5w;
y3r=vround(.85h if serifs:-slab fi); y4=y6=.5[y3,y5];
y5r=vround(.15h if serifs:+slab fi);
penstroke pulled_arc.e(3,4) & pulled_arc.e(4,5)
 & pulled_arc.e(5,6) & pulled_arc.e(6,3) & cycle;	% bowl
if serifs: dish_serif(1,2,a,1/3,1.25cap_jut,b,1/3,1.25cap_jut);	% upper serif
 dish_serif(2,1,c,1/3,1.25cap_jut,d,1/3,1.25cap_jut); fi	% lower serif
math_fit(-.5cap_height#*slant-.5u#,ic#); penlabels(1,2,3,4,5,6); endchar;
cmchar "Uppercase Greek Psi";
beginchar(oct"011",14u#,cap_height#,0);
italcorr .8cap_height#*slant-.5u#;
adjust_fit(0,0);
numeric shaved_stem;
shaved_stem=cap_stem-round 2stem_corr;
pickup tiny.nib; pos1(shaved_stem,0); pos2(shaved_stem,0);
lft x1l=lft x2l=round(.5w-.5cap_stem); top y1=h; bot y2=0;
filldraw stroke z1e--z2e; % stem
pos3(shaved_stem,-180); pos4(shaved_stem,-180);
pos5(vair,-90); x5=x1; bot y5r=vround(.15h if serifs:+slab fi);
pos6(shaved_stem,0); pos7(shaved_stem,0);
lft x3r=round u; x7=w-x3; lft x4r=round(3u-.5shaved_stem); x6=w-x4;
pos3'(vair,90); pos7'(vair,90); z3'r=z3r; z7'r=z7r;
y3=y7; y4=y6=.6h; y3=good.y(y3+.84h if serifs:-slab fi-y3');
interim superness:=more_super;
filldraw z3'l{right}...z4r{down} & super_arc.r(4,5)
 & super_arc.r(5,6) & z6r{up}...z7'l{right}
 --z7r---z7l...z6l{down} & super_arc.l(6,5)
 & super_arc.l(5,4) & z4l{up}...z3l---z3r--cycle;	% stroke
if serifs: dish_serif(1,2,a,1/3,1.25cap_jut,b,1/3,1.25cap_jut);	% upper serif
 dish_serif(2,1,c,1/3,1.25cap_jut,d,1/3,1.25cap_jut); fi	% lower serif
math_fit(-.8cap_height#*slant-.5u#,.4cap_height#*slant-1.25u#);
penlabels(1,2,3,4,5,6,7); endchar;
cmchar "Uppercase Greek Omega";
beginchar(oct"012",13u#,cap_height#,0);
italcorr .75cap_height#*slant-.5u#;
adjust_fit(0,0);
pickup tiny.nib; pos1(vair,90); pos2(cap_curve,180);
pos3(vair,180); pos4(cap_curve,0); pos5(vair,0);
x1=.5w; top y1r=h+o; lft x2r=round u; y2=y4=2/3h; x4=w-x2;
rt x3l=round(1/3(w+.5u)+.5hair); bot y3=bot y5=0; x5=w-x3;
filldraw stroke z3e{up}...{up}z2e
 & pulled_super_arc.e(2,1)(.5superpull)
 & pulled_super_arc.e(1,4)(.5superpull)
 & z4e{down}...{down}z5e;	% bowl
numeric arm_thickness; path p; p=z3{up}...{up}z2;
arm_thickness=vround(if hefty:slab+2stem_corr else:.75[slab,cap_vstem] fi);
pickup crisp.nib; pos6(arm_thickness,-90); pos7(fudged.hair,-180);
bot y6r=0; x6=x3; lft x7r=round .8u; y7=good.y(y6l+.5beak);
(x,y)=p intersectionpoint((0,y6l)--(w,y6l)); x6l:=x;
arm(6,7,a,.5beak_darkness,-1.2beak_jut);	% left arm and beak
pos8(arm_thickness,-90); pos9(fudged.hair,0);
y8=y6; y9=y7; x8+x6=x9+x7=w; x8l:=w-x6l;
arm(8,9,b,.5beak_darkness,1.2beak_jut);	% right arm and beak
math_fit(0,.5ic#); penlabels(1,2,3,4,5,6,7,8,9); endchar;